package com.br.negocio.controller;

import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.br.negocio.dao.ContaPagarDAO;
import com.br.negocio.vo.ContaPagarVO;

@Service("controllerContaPagar")
public class ControllerContaPagar {

	@Resource
	private ContaPagarDAO contapagarDAO;
	
	public void atualizarContaPagar(ContaPagarVO contapagarVO) {
		
		if (contapagarVO == null) {
			throw new IllegalArgumentException("Um contapagar valido e obrigatorio.");
		}
		
		if ((!contapagarDAO.validaDuplicado(contapagarVO)) &&
			(contapagarVO.getCodigo() == 0)) {
			throw new IllegalArgumentException("Este contapagar ja existe.");
		}

		if (contapagarVO.getCodigo() == 0) {
			contapagarVO.setDataCriacao(new Date());
			contapagarVO.setDataAlteracao(new Date());
			contapagarDAO.inserirContaPagar(contapagarVO);
		} else {
			contapagarVO.setDataAlteracao(new Date());
			contapagarDAO.atualizarContaPagar(contapagarVO);
		}
	}
	
	public void removerOrcamento(ContaPagarVO contapagarVO) {
		
		if (contapagarVO == null) {
			throw new IllegalArgumentException("Uma contapagar valida e obrigatorio.");
		}
		
		if (contapagarVO.getCodigo() == 0) {
			throw new IllegalStateException("A entidade tem um codigo invalido: " + contapagarVO.getCodigo());
		}
		
		contapagarDAO.inserirContaPagar(contapagarVO);
	}

	public void removerContaPagar(ContaPagarVO contapagarVO) {
		
		if (contapagarVO == null) {
			throw new IllegalArgumentException("Uma contapagar valida é obrigatório.");
		}
		
		if (contapagarVO.getCodigo() == 0) {
			throw new IllegalStateException("A entidade tem um codigo invalido: " + contapagarVO.getCodigo());
		}
		
		contapagarDAO.removerContaPagar(contapagarVO);
	}

	public ContaPagarVO obterContaPagar(ContaPagarVO contapagarVO) {
		
		if (contapagarVO == null) {
			throw new IllegalArgumentException("Um contapagar valida é obrigatório.");
		}

		return contapagarDAO.obterContaPagar(contapagarVO);
	}
	
	public ContaPagarVO obterServico(ContaPagarVO contapagarVO) {
		
		if (contapagarVO == null) {
			throw new IllegalArgumentException("Uma contapagar valida é necessario.");
		}

		return contapagarDAO.obterContaPagar(contapagarVO);
	}
	
	
	
	

	public List<ContaPagarVO> obterListaContaPagar() {
		return contapagarDAO.obterListaContaPagar();
	}
	
}